#pragma once
#ifndef SMPPBROADCASTREQUESTOPTIONALTLVS_HPP
#define SMPPBROADCASTREQUESTOPTIONALTLVS_HPP

#include "SMPPAlertOnMessageDelivery.hpp"
#include "SMPPBroadcastChannelIndicator.hpp"
#include "SMPPBroadcastContentTypeInfo.hpp"
#include "SMPPBroadcastMessageClass.hpp"
#include "SMPPBroadcastServiceGroup.hpp"
#include "SMPPCallbackNum.hpp"
#include "SMPPCallbackNumAtag.hpp"
#include "SMPPCallbackNumPresInd.hpp"
#include "SMPPDestAddrSubunit.hpp"
#include "SMPPDestSubaddress.hpp"
#include "SMPPDestPort.hpp"
#include "SMPPDisplayTime.hpp"
#include "SMPPLanguageIndicator.hpp"
#include "SMPPMessagePayload.hpp"
#include "SMPPMsValidity.hpp"
#include "SMPPPayloadType.hpp"
#include "SMPPPrivacyIndicator.hpp"
#include "SMPPSmsSignal.hpp"
#include "SMPPSourceAddrSubunit.hpp"
#include "SMPPSourcePort.hpp"
#include "SMPPSourceSubaddress.hpp"
#include "SMPPUserMessageReference.hpp"
#include "SMPPBroadcastErrorStatus.hpp"
#include "SMPPFailedBroadcastAreaIdentifier.hpp"

namespace smpp{
namespace pdu{

class SMPP_DLLPRFX BroadcastRequestOptionalTLVs{
protected:
	AlertOnMessageDelivery *_AlertOnMessageDelivery;
	BroadcastChannelIndicator *_BroadcastChannelIndicator;
	BroadcastContentTypeInfo *_BroadcastContentTypeInfo;
	BroadcastMessageClass *_BroadcastMessageClass;
	BroadcastServiceGroup *_BroadcastServiceGroup;
	CallbackNum *_CallbackNum;
	CallbackNumAtag *_CallbackNumAtag;
	CallbackNumPresInd *_CallbackNumPresInd;
	DestAddrSubunit *_DestAddrSubunit;
	DestSubaddress *_DestSubaddress;
	DestPort *_DestPort;
	DisplayTime *_DisplayTime;
	LanguageIndicator *_LanguageIndicator;
	MessagePayload *_MessagePayload;
	MsValidity *_MsValidity;
	PayloadType *_PayloadType;
	PrivacyIndicator *_PrivacyIndicator;
	SmsSignal *_SmsSignal;
	SourceAddrSubunit *_SourceAddrSubunit;
	SourcePort *_SourcePort;
	SourceSubaddress *_SourceSubaddress;
	UserMessageReference *_UserMessageReference;
	BroadcastErrorStatus *_BroadcastErrorStatus;
	FailedBroadcastAreaIdentifier *_FailedBroadcastAreaIdentifier;
public:
	BroadcastRequestOptionalTLVs(
		const AlertOnMessageDelivery *nAlertOnMessageDelivery = 0,
		const BroadcastChannelIndicator *nBroadcastChannelIndicator = 0,
		const BroadcastContentTypeInfo *nBroadcastContentTypeInfo = 0,
		const BroadcastMessageClass *nBroadcastMessageClass = 0,
		const BroadcastServiceGroup *nBroadcastServiceGroup = 0,
		const CallbackNum *nCallbackNum = 0,
		const CallbackNumAtag *nCallbackNumAtag = 0,
		const CallbackNumPresInd *nCallbackNumPresInd = 0,
		const DestAddrSubunit *nDestAddrSubunit = 0,
		const DestSubaddress *nDestSubaddress = 0,
		const DestPort *nDestPort = 0,
		const DisplayTime *nDisplayTime = 0,
		const LanguageIndicator *nLanguageIndicator = 0,
		const MessagePayload *nMessagePayload = 0,
		const MsValidity *nMsValidity = 0,
		const PayloadType *nPayloadType = 0,
		const PrivacyIndicator *nPrivacyIndicator = 0,
		const SmsSignal *nSmsSignal = 0,
		const SourceAddrSubunit *nSourceAddrSubunit = 0,
		const SourcePort *nSourcePort = 0,
		const SourceSubaddress *nSourceSubaddress = 0,
		const UserMessageReference *nUserMessageReference = 0,
		const BroadcastErrorStatus *nBroadcastErrorStatus = 0,
		const FailedBroadcastAreaIdentifier *nFailedBroadcastAreaIdentifier = 0);

	BroadcastRequestOptionalTLVs(const BroadcastRequestOptionalTLVs &);

	~BroadcastRequestOptionalTLVs();

	void setAlertOnMessageDelivery(const AlertOnMessageDelivery *);

	const AlertOnMessageDelivery *getAlertOnMessageDelivery() const;

	void setBroadcastChannelIndicator(const BroadcastChannelIndicator *);

	const BroadcastChannelIndicator *getBroadcastChannelIndicator() const;

	void setBroadcastContentTypeInfo(const BroadcastContentTypeInfo *);

	const BroadcastContentTypeInfo *getBroadcastContentTypeInfo() const;

	void setBroadcastMessageClass(const BroadcastMessageClass *);

	const BroadcastMessageClass *getBroadcastMessageClass() const;

	void setBroadcastServiceGroup(const BroadcastServiceGroup *);

	const BroadcastServiceGroup *getBroadcastServiceGroup() const;

	void setCallbackNum(const CallbackNum *);

	const CallbackNum *getCallbackNum() const;

	void setCallbackNumAtag(const CallbackNumAtag *);

	const CallbackNumAtag *getCallbackNumAtag() const;

	void setCallbackNumPresInd(const CallbackNumPresInd *);

	const CallbackNumPresInd *getCallbackNumPresInd() const;

	void setDestAddrSubunit(const DestAddrSubunit *);

	const DestAddrSubunit *getDestAddrSubunit() const;

	void setDestSubaddress(const DestSubaddress *);

	const DestSubaddress *getDestSubaddress() const;

	void setDestPort(const DestPort *);

	const DestPort *getDestPort() const;

	void setDisplayTime(const DisplayTime *);

	const DisplayTime *getDisplayTime() const;

	void setLanguageIndicator(const LanguageIndicator *);

	const LanguageIndicator *getLanguageIndicator() const;

	void setMessagePayload(const MessagePayload *);

	const MessagePayload *getMessagePayload() const;

	void setMsValidity(const MsValidity *);

	const MsValidity *getMsValidity() const;

	void setPayloadType(const PayloadType *);

	const PayloadType *getPayloadType() const;

	void setPrivacyIndicator(const PrivacyIndicator *);

	const PrivacyIndicator *getPrivacyIndicator() const;

	void setSmsSignal(const SmsSignal *);

	const SmsSignal *getSmsSignal() const;

	void setSourceAddrSubunit(const SourceAddrSubunit *);

	const SourceAddrSubunit *getSourceAddrSubunit() const;

	void setSourcePort(const SourcePort *);

	const SourcePort *getSourcePort() const;

	void setSourceSubaddress(const SourceSubaddress *);

	const SourceSubaddress *getSourceSubaddress() const;

	void setUserMessageReference(const UserMessageReference *);

	const UserMessageReference *getUserMessageReference() const;

	void setBroadcastErrorStatus(const BroadcastErrorStatus *);

	const BroadcastErrorStatus *getBroadcastErrorStatus() const;

	void setFailedBroadcastAreaIdentifier(
		const FailedBroadcastAreaIdentifier *);

	const FailedBroadcastAreaIdentifier *
		getFailedBroadcastAreaIdentifier() const;

	const quint16 getLength() const;
};

}
}

#endif
